//============================================================================================
/**
 * @file	waza_oshie.h
 * @brief	技教え/思い出し処理
 * @author	Hiroyuki Nakamura
 * @date	06.05.09
 */
//============================================================================================
#ifndef WAZA_OSHIE_H
#define WAZA_OSHIE_H
#undef GLOBAL
#ifdef WAZA_OSHIE_H_GLOBAL
#define GLOBAL	/*	*/
#else
#define GLOBAL	extern
#endif

#include "system/keytouch_status.h"

//============================================================================================
//	定数定義
//============================================================================================
typedef struct {
	POKEMON_PARAM * pp;		// ポケモン
	MYSTATUS * myst;		// 自分データ
	CONFIG * cfg;			// コンフィグデータ
	KEYTOUCH_STATUS* kt_status;	// キーorタッチステータス
	u16 * waza_tbl;			// 技テーブル
	u16	pos;
	u16	scr;
	u8	page;
	u8	mode;				// 処理モード
	u8	ret;				// 戻り値
	u8	del_pos;
}WAZAOSHIE_DATA;

enum {
	WAZAOSHIE_MODE_TEACH = 0,	// 教え
	WAZAOSHIE_MODE_REMIND,		// 思い出し
};

enum {
	WAZAOSHIE_RET_SET = 0,	// 覚えた
	WAZAOSHIE_RET_CANCEL,	// キャンセル
};

#define	WAZAOSHIE_TBL_MAX		( 0xffff )	// 技テーブルの最後に追加

#ifdef PM_DEBUG

///デバッグメニュー用データ型
typedef struct {
	WAZAOSHIE_DATA	dat;
	u32	seq;
}D_WO_WORK;

#endif	//PM_DEBUG

//============================================================================================
//	プロトタイプ宣言
//============================================================================================

//--------------------------------------------------------------------------------------------
/**
 * プロセス関数：初期化
 *
 * @param	proc	プロセスデータ
 * @param	seq		シーケンス
 *
 * @return	処理状況
 */
//--------------------------------------------------------------------------------------------
GLOBAL PROC_RESULT WazaOshieProc_Init( PROC * proc, int * seq );

//--------------------------------------------------------------------------------------------
/**
 * プロセス関数：メイン
 *
 * @param	proc	プロセスデータ
 * @param	seq		シーケンス
 *
 * @return	処理状況
 */
//--------------------------------------------------------------------------------------------
GLOBAL PROC_RESULT WazaOshieProc_Main( PROC * proc, int * seq );

//--------------------------------------------------------------------------------------------
/**
 * プロセス関数：終了
 *
 * @param	proc	プロセスデータ
 * @param	seq		シーケンス
 *
 * @return	処理状況
 */
//--------------------------------------------------------------------------------------------
GLOBAL PROC_RESULT WazaOshieProc_End( PROC * proc, int * seq );


//--------------------------------------------------------------------------------------------
/**
 * 技教えデータ領域取得
 *
 * @param	heap	ヒープID
 *
 * @return	技教えデータ領域
 */
//--------------------------------------------------------------------------------------------
GLOBAL WAZAOSHIE_DATA * WazaOshie_DataAlloc( u32 heap );

//--------------------------------------------------------------------------------------------
/**
 * 技教えデータ領域解放
 *
 * @param	heap	ヒープID
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
GLOBAL void WazaOshie_DataFree( WAZAOSHIE_DATA * dat );

//--------------------------------------------------------------------------------------------
/**
 * 思い出し可能な技を取得
 *
 * @param	pp		ポケモンデータ
 * @param	heap	ヒープID
 *
 * @return	取得した技データ
 *
 *	解放は各自で
 */
//--------------------------------------------------------------------------------------------
GLOBAL u16 * RemaindWazaGet( POKEMON_PARAM * pp, u32 heap );

//--------------------------------------------------------------------------------------------
/**
 * 教えられる/思い出せる技があるかチェック
 *
 * @param	tbl		技テーブル
 *
 * @retval	"TRUE = あり"
 * @retval	"FALSE = なし"
 */
//--------------------------------------------------------------------------------------------
GLOBAL BOOL WazaOshie_WazaTableChack( u16 * tbl );


#undef GLOBAL
#endif	// WAZA_OSHIE_H